package com.wanshu.sys.service;

import com.wanshu.common.util.PageUtils;
import com.wanshu.sys.entity.SysMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wanshu.sys.model.SysMenuQueryDto;

import java.util.List;

/**
 * <p>
 * 菜单管理 服务类
 * </p>
 *
 * @author 波哥
 * @since 2023-05-09
 */
public interface ISysMenuService extends IService<SysMenu> {

    /**
     * 菜单分页查询，同时关联二级菜单
     *
     * @param dto dto
     * @return {@link PageUtils }
     * @author 张颖辉（zyh）
     * @date 2023/07/04
     * @version 1.0.0
     */
    PageUtils listPage(SysMenuQueryDto dto);

    /**
     * 父菜单列表
     *
     * @return {@link List }<{@link SysMenu }>
     * @author 张颖辉（zyh）
     * @date 2023/07/06
     * @version 1.0.0
     */
    List<SysMenu> listParentMenu();

    /**
     * 保存系统菜单
     *
     * @param sysMenu 系统菜单
     * @author 张颖辉（zyh）
     * @date 2023/07/11
     * @version 1.0.0
     */
    void saveSysMenu(SysMenu sysMenu);

    /**
     * 通过id查询菜单
     *
     * @param menuId 菜单id
     * @return {@link SysMenu }
     * @author 张颖辉（zyh）
     * @date 2023/07/11
     * @version 1.0.0
     */
    SysMenu queryMenuById(Long menuId);

    /**
     * 删除通过id
     *
     * @param menuId 菜单id
     * @author 张颖辉（zyh）
     * @date 2023/07/11
     * @version 1.0.0
     */
    void deleteById(Long menuId);

    /**
     *  递归子菜单
     *
     * @param menu 菜单
     * @return {@link SysMenu }
     * @author 张颖辉（zyh）
     * @date 2023/07/12
     * @version 1.0.0
     */
    SysMenu getChildrenMenu(SysMenu menu);

    /**
     * 查询用户菜单 前端初始化菜单时调用
     *
     * @return {@link List }<{@link SysMenu }>
     * @author 张颖辉（zyh）
     * @date 2023/07/18
     * @version 1.0.0
     */
    List<SysMenu> getUserMenus();
}
